home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ABUSESRC.ZIP
/
AbuseSrc
/
abuse
/
inc
/
lisp2.hpp
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-24
|
4KB
|
127 lines
#ifndef _LISP_HPP_INCLUDED_
#define _LISP_HPP_INCLUDED_
#include <sys/types.h>
#include <stdtool.h>
extern "C"
{
#include "li_modul.h"
#include "li_proto.h"
}
/* ------------------------- COMPATIBILITY ------------------------- */
#define L_SYMBOL LI_tSYMBOL
#define L_STRING LI_tSTRING
#define L_CONS_CELL LI_tCONS
#define L_NUMBER LI_tLONG
#define L_CHARACTER LI_tLONG
#define L_POINTER LI_tUSER
#define L_FIXED_POINT LI_tFIXEDPOINT
#define PERM_SPACE 0
#define TEMP_SPACE 0
#define cons_cell Cell
#define lisp_symbol Cell
/* ------------------------- GLOBAL VARS ------------------------- */
extern int current_space;
extern void *enviroment;
/* ------------------------- GLOBAL LISP VARS ------------------------- */
extern Cell *l_difficulty,*l_easy,*l_hard,*l_medium,*l_main_menu,
*l_logo,*l_state_art,*l_abilities,*l_state_sfx,
*l_song_list,*l_filename,*l_sfx_directory,*l_max_hp,
*l_default_font,*l_morph,*l_max_power,*l_default_abilities,
*l_default_ai_function,*l_tile_files,*l_empty_cache,*l_range,
*l_joy_file,*l_hurt_all,*l_death_handler,*l_title_screen,
*l_console_font,*l_fields,*l_dist,*l_pushx,*l_pushy,
*l_object,*l_tile;
/* variables for the status bar */
extern Cell *l_statbar_ammo_x,*l_statbar_ammo_y,
*l_statbar_ammo_w,*l_statbar_ammo_h,
*l_statbar_ammo_bg_color,
*l_statbar_health_x,*l_statbar_health_y,
*l_statbar_health_w,*l_statbar_health_h,
*l_statbar_health_bg_color,
*l_statbar_logo_x,*l_statbar_logo_y;
extern Cell *true_symbol;
/* ------------------------- TRIGONOMETRY -------------------- */
#define FIXED_TRIG_SIZE 360 // 360 degrees stored in table
extern long sin_table[FIXED_TRIG_SIZE]; // this should be filled in by external module
#define TBS 1662 // atan table granularity
extern unsigned short atan_table[TBS];
/* ------------------------- COMPATIBILITY -------------------- */
typedef Cell lisp_symbol;
#undef CAR
#undef CDR
#undef SCAR
#undef SCDR
#define SCAR(x) (((Cell*)x)->type == LI_tCONS ? ((Cell*)x)->v.cons.car : Nil)
#define SCDR(x) (((Cell*)x)->type == LI_tCONS ? ((Cell*)x)->v.cons.cdr : Nil)
#define CAR(x) (((Cell*)x)->v.cons.car)
#define CDR(x) (((Cell*)x)->v.cons.cdr)
/* ------------------------- FUNCTION PROTOTYPES ------------------------- */
void lisp_init (long a, long b);
void lisp_uninit (void);
char* lstring_value (void* x);
long lnumber_value (void* x);
char lcharacter_value (void* x);
Cell* new_lisp_number (long x);
Cell* new_lisp_character (unsigned short x);
Cell* new_lisp_string (long x);
Cell* new_lisp_pointer (void* x);
Cell* new_cons_cell (void);
Cell* lcar (void* x);
Cell* lcdr (void* x);
Cell* lprint (void* x);
Cell* set_symbol_number (void* x, long y);
Cell* set_symbol_value(void *symbol, void *value);
Cell* symbol_value (void* x);
Cell* make_find_symbol (char* name);
Cell* find_symbol (char* name);
Cell* symbol_function (void* symbol);
void use_user_space(void *addr, long size);
Cell* eval_function(void *sym, void *arg_list, void *env);
void clear_tmp();
void resize_tmp (int size);
Cell* eval (void* item, void* env);
long list_length(void *i);
Cell* nth (int num, void *list);
Cell* compile (char*& str);
int get_lprop_number (void* symbol, int number);
Cell* assoc (void* vlists, void* vtarget);
char* symbol_name (void* symbol);
int item_type (void* cell);
long lisp_cos(long x);
long lisp_sin(long x);
long lisp_atan2(long dy, long dx);
void push_onto_list(Cell *object, Cell *&list);
void* lpointer_value (void* x);
long lfixed_point_value(void* x);
void lisp_init_globals ();
int lisp_init_lisp_fns ();
void lisp_init_c_fns ();
extern "C" void lbreak (const char* format, ...);
#endif /* _LISP_HPP_INCLUDED_ */